build:
	cmake -DCMAKE_BUILD_TYPE=Release ..
	make

remove_build:
	rm CMakeCache.txt
	rm -r -f CMakeFiles
	rm Makefile
	rm cmake_install.cmake
	rm libwmsketch.a
	rm wmsketch_classification

run_experiments_wm_and_jl_sketch:
	mkdir JSON_Results_$(algorithm)_Trial_$(trial_num)
	for lambda in 1e-3 1e-4 1e-5 ; do \
		for dataset in kdda rcv1_test.binary url_combined ; do \
			./wmsketch_classification --method $(algorithm) --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 7 --depth 2 >> JSON_Results_$(algorithm)_Trial_$(trial_num)/$(algorithm)_Trial_$(trial_num)_2KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method $(algorithm) --train ../Datasets/$$dataset --l2_reg $$lambda --topk 256 --log2_width 8 --depth 2 >> JSON_Results_$(algorithm)_Trial_$(trial_num)/$(algorithm)_Trial_$(trial_num)_4KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method $(algorithm) --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 7 --depth 14 >> JSON_Results_$(algorithm)_Trial_$(trial_num)/$(algorithm)_Trial_$(trial_num)_8KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method $(algorithm) --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 7 --depth 30 >> JSON_Results_$(algorithm)_Trial_$(trial_num)/$(algorithm)_Trial_$(trial_num)_16KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method $(algorithm) --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 8 --depth 31 >> JSON_Results_$(algorithm)_Trial_$(trial_num)/$(algorithm)_Trial_$(trial_num)_32KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
		done ; \
	done

run_experiments_black_box_reduction:
	mkdir JSON_Results_black_box_reduction_Trial_$(trial_num)
	for lambda in 1e-3 1e-4 1e-5 ; do \
		for dataset in kdda rcv1_test.binary url_combined ; do \
			./wmsketch_classification --method black_box_reduction --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 6 --depth 2 >> JSON_Results_black_box_reduction_Trial_$(trial_num)/black_box_reduction_Trial_$(trial_num)_2KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method black_box_reduction --train ../Datasets/$$dataset --l2_reg $$lambda --topk 256 --log2_width 7 --depth 2 >> JSON_Results_black_box_reduction_Trial_$(trial_num)/black_box_reduction_Trial_$(trial_num)_4KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method black_box_reduction --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 6 --depth 14 >> JSON_Results_black_box_reduction_Trial_$(trial_num)/black_box_reduction_Trial_$(trial_num)_8KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method black_box_reduction --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 6 --depth 30 >> JSON_Results_black_box_reduction_Trial_$(trial_num)/black_box_reduction_Trial_$(trial_num)_16KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
			./wmsketch_classification --method black_box_reduction --train ../Datasets/$$dataset --l2_reg $$lambda --topk 128 --log2_width 7 --depth 31 >> JSON_Results_black_box_reduction_Trial_$(trial_num)/black_box_reduction_Trial_$(trial_num)_32KB_l2reg_$${lambda}_Dataset_$${dataset} ; \
		done ; \
	done

run_logistic_regression:
	mkdir JSON_Results_logistic_regression_full
	for lambda in 1e-3 1e-4 1e-5 ; do \
		for dataset in kdda rcv1_test.binary url_combined ; do \
			./wmsketch_classification --method logistic --train ../Datasets/$$dataset --l2_reg $$lambda --topk 0 >> JSON_Results_logistic_regression_full/logistic_regression_full_l2reg_$${lambda}_Dataset_$${dataset} ; \
		done ; \
	done
